\section{Dimensionering}
I dette afsnit vil der blive designet regulatorer til $x$- og $y$-retning, som i simuleringer af systemet er i stand  til at overholde kravspecifikationen.

\subsection{Regulator til $x$-retning}

For at designe en regulator til styring af kranen i $x$-retningen er regulatoren opdelt i en indre løkke, bestående af en hastighedsregulator, og en ydre løkke, bestående af en vinkelregulator. Regulatoren til den indre løkke er først designet uafhængigt af den ydre løkke, hvorefter en samlet regulator er designet.

\subsubsection{Hastighedregulator}
For hastighedsregulering i $x$-retning haves blokdiagrammet vist på figur \ref{fig:indreHastblok}. Til at designe en regulator til hastigheden er det valgt at anvende metoder der bygger på rodkurver.

\begin{figure}[H] %Blokdiagram af  hastighedsregulering x
\centering
\begin{tikzpicture}[auto, node distance=2cm,>=latex']
  % We start by placing the blocks
    \node [input, name=input] {};
    \node [sum, right of=input, node distance=1.7cm] (sum) {};
    \node [block, right of=sum, node distance=2.3cm] (Dtheta-last) {$D_{\dot{X}_{\text{slæde}}}(s)$};
    \node [block, right of=Dtheta-last, node distance=3cm] (Gyprik-last) {$G_{\dot{X}_{\text{slæde}}}(s)$};
    \node [output, right of=Gyprik-last,, node distance=2.3cm] (output) {}; 
 
  % We draw lines	    
    \draw [->] (input) -- node {$R_{\dot{X}_{\text{slæde}}}$} (sum);
    \draw [->] (sum) -- node {$e_{\dot{X}_{\text{slæde}}}$} (Dtheta-last);
    \draw [->] (Dtheta-last) -- node[name=u] {$U_{e,x}$} (Gyprik-last);
    \draw [->] (Gyprik-last) -- node[name=y] {$Y_{\dot{X}_{\text{slæde}}}$}(output);
    \coordinate [below = -15pt, below of=u] (below-u);
    \draw [->] (y) |- (below-u) -| node[pos=0.99] {$-$} (sum);       
\end{tikzpicture}
\caption{Blokdiagram af den indre løkke.}
\label{fig:indreHastblok}
\end{figure}
\vspace{-10pt}
Den indre løkke vist på blokdiagram \ref{fig:indreHastblok} skal designes således den overholder kravene i kravspecifikation som er opsummeret i tabel \ref{tab:klassisk_regulatorkrav_x}.
\begin{table}[H]
\centering
\begin{tabular}{|c|c|}
\hline Område & Krav \\
\hline Oversving & < 5 \% \\ 
\hline Steady state fejl & < $\pm$ 2,5 \% \\
\hline 
\end{tabular} 
\caption{Krav til hastighedsregulering i $x$-retning.}
\label{tab:klassisk_regulatorkrav_x}
\end{table}
På figur \ref{fig:xhastUreguleretRodkurve} er det uregulerede systems rodkurver vist.
\begin{figure}[H]
  \centering
  \includegraphics[width = \textwidth]{billeder/klassisk/rlocus_xhast_indre.pdf}
  \caption{Rodkurveplot for det uregulerede system.}
\label{fig:xhastUreguleretRodkurve}
\end{figure}
For at styre dette system er der set på forskellige pol/nulpunkt kombinationer. Der er undersøgt effekten af et kompleks polpar til at fjerne effekten af det komplekse nulpunktspar tæt ved nul og et reelt nulpunktpar til at flytte det komplekse polpar tæt på nul længere mod venstre. Denne løsning ses dog som meget kompleks og den resulterer også i problemer med at overholde kravet om maksimum 5 \% oversving. En simpel regulator der kan opfylde de ønskede behov er en integrator, da denne vil sikre der ingen steady state fejl er, men da denne ikke giver mulighed for at polerne i systemet kan flyttes længere mod venstre og dermed gøre systemet mere responsivt, er denne løsning heller ikke anvendt. Det endelig valg af regulator blev derfor en pol i nul og et nulpunkt i -2, hvor nulpunktet er sat ind for at få systemet til at være mere responsivt. Rodkurverne for det endelige design af regulator til hastigheden i $x$-retning er vist på figur \ref{fig:xhastpolplot}.

\begin{figure}[H]
  \centering
  \includegraphics[width = \textwidth]{billeder/klassisk/hastRegulatorRodkurve.pdf}
  \caption{Rodkurveplot for hastighedsregulator med pol i nul og nulpunkt i -2.}
\label{fig:xhastpolplot}
\end{figure}
\vspace{-10pt}
Efter at de endelige rodkurver er fundet er der blevet justeret på forstærkningen så pol placeringen bliver således at alle krav til regulatoren kan opfyldes. Forstærkningen er fundet til 30 og på figur \ref{fig:xhaststepplot} er der vist et steprespons for både det regulerede og det uregulerede system. 

\begin{figure}[H]
  \centering
  \includegraphics[width = \textwidth]{billeder/klassisk/hastRegulatorStep.pdf}
  \caption{Steprespons henholdsvis med og uden hastighedsregulator, hvor der steppes til $0,8 ~\has$. Hastighedsregulator med pol i nul og nulpunkt i -2.}
\label{fig:xhaststepplot}
\end{figure}

Ud fra figur \ref{fig:xhaststepplot} ses det at alle krav til regulatoren er opfyldt, og derfor er regulatoren for hastigheden i $x$-retning givet i ligning \eqref{eq:x_hast_regulator}.

\begin{IEEEeqnarray}{rCl}
D_{\dot{X}_{\text{slæde}}}(s) = 30 + \frac{60}{s}
\label{eq:x_hast_regulator}
\end{IEEEeqnarray}

\subsubsection{Vinkelregulator}
Med den indre løkke designet er det nu kommet til at designe den ydre vinkel regulator. Ligeledes som den indre løkke er det her valgt at anvende rodkurver til at finde en passende regulator. Blokdiagrammet for systemet er vist på figur \ref{fig:blokdiagram_reg_xhast}.

\begin{figure}[H] %Blokdiagram af vinkel med hastighed
\centering
\begin{tikzpicture}[auto, node distance=2cm,>=latex']
  % We start by placing the blocks
    \node [input, name=input] {};
    \node [sum, right of=input, node distance=1.7cm] (sum1) {};
    \node [block, right of=sum1, node distance=2.1cm] (Dtheta-last) {$D_{\Theta_{\text{last}}}(s)$};
    \node [sum, right of=Dtheta-last, node distance=1.7cm] (sum2) {};
    \node [block, right of=sum2, node distance=2.4cm] (Dxprik-slaede) {$D_{\dot{X}_{\text{slæde}}}(s)$};
    \node [block, right of=Dxprik-slaede, node distance=2.8cm] (Gxprik-slaede) {$G_{\dot{X}_{\text{slæde}}}(s)$};
    \node [block, right of=Gxprik-slaede, node distance=3cm] (Gtheta-last) {$G_{\Theta_{\text{last}}}(s)$}; 
    \node [output, right of=Gtheta-last,, node distance=2.3cm] (output) {}; 
 
  % We draw lines	    
    \draw [->] (input) -- node {$R_{\Theta_{\text{last}}}$} (sum1);
    \draw [->] (sum1) -- node {$e_{\Theta_{\text{last}}}$} (Dtheta-last);
    \draw [->] (Dtheta-last) -- node[name=test]{} (sum2);
    \draw [->] (sum2) -- node {$e_{\dot{X}_{\text{slæde}}}$}(Dxprik-slaede);
    \draw [->] (Dxprik-slaede) -- node[name=u] {$U_{e,x}$} (Gxprik-slaede);
    \coordinate [below = -15pt, below of=u] (below-u);
    \draw [->] (Gxprik-slaede) -- node[name=xprik] {$\dot{X}_{\text{slæde}}$} (Gtheta-last);
    \coordinate [below = 0pt, below of=xprik] (below-xprik);
    \draw [->] (Gtheta-last) -- node[name=y] {$Y_{\Theta_{\text{last}}}$}(output);
    \draw [->] (xprik) |- (below-u) -| node[pos=0.99] {$-$} (sum2);    
    \draw [->] (y) |- (below-xprik) -| node[pos=0.99] {$-$} (sum1);   
    \coordinate [above=-40pt, above of=test, left =20pt] (above-test);
     \coordinate [above = -36pt, above of=sum2] (above-sum2);
     \draw [->] (above-sum2) -- (sum2);
     \draw [-] (above-test) --node {$R_{\dot{X}_{\text{slæde}}}$}(above-sum2);
\end{tikzpicture}
\caption{Blokdiagram af vinkelregulator.}
\label{fig:blokdiagram_reg_xhast}
\end{figure}

Regulatoren der skal designes til blokdiagrammet vist på figur \ref{fig:blokdiagram_reg_xhast} skal overholde kravene opstillet i kravspecifikationen og opsummeret i tabel \ref{tab:klassisk_regulatorkrav_vinkelx}.

\begin{table}[H]
\centering
\begin{tabular}{|c|c|}
\hline Område & Krav \\
\hline Vinkel & < $4,5\degree$ \\
\hline Steady state fejl & < $\pm$ 2,5 \% \\
\hline 
\end{tabular} 
\caption{Krav til vinkelregulering i $x$-retning.}
\label{tab:klassisk_regulatorkrav_vinkelx}
\end{table}

Figur \ref{fig:UreguleretVinkelRodkurve} viser det uregulerede systems rodkurver. 

\begin{figure}[H]
  \centering
  \includegraphics[width = \textwidth]{billeder/klassisk/VinkelRodkurve.pdf}
  \caption{Rodkurveplot for styring af vinklen.}
\label{fig:UreguleretVinkelRodkurve}
\end{figure}

Der er valgt at implementere en proportional regulator, da systemet i sig selv undertrykker steady state fejl. Derved er det ikke muligt at ændre banerne for polerne, men derimod kun at finde den bedste placering med de kurver der er. Forstærkningen blev valgt ud fra et ønske om at overholde kravene til vinklen og efter håndtuning er forstærkningen fundet til -10.

Forstærkningen til  $G_{\Theta_{\text{last}}}(s)$ er negativ for at modvirke medkobling i systemet. Medkoblingen forekommer fordi en positiv accelerationsændring af slæden resulterer i en negativ vinkel. Til at begrænse denne negative vinkel skal vinkelregulatoren levere et negativt bidrag og ikke positivt som ville være tilfældet hvis forstærkningen ikke er negativ.\\\\
Til at verificere om de regulatorer der er fundet er stabile, ved de valgte forstærkninger, anvendes der et bodeplot. Åbensløjfe bodeplottet for det samlede system i $x$-retningen er vist på figur \ref{fig:x_regulering_bode}.

\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{billeder/klassisk/bode_xhast_aben.pdf}
\caption{Bodeplot af åbensløjfe for $x$-retningen.}
\label{fig:x_regulering_bode}
\end{figure}

Ud fra figur \ref{fig:x_regulering_bode} kan det ses at forstærkningmargenen er -39,2 dB og at fasemarginen er $43,4\degree$. Tommelfingerregler siger at der gerne skulle være en fasemargin på over $45\degree$ \citep{Feedback:book}, men da systemet er meget tæt på det og at der er en god forstærkningsmargin er systemet stabilt. Til slut er stepresponset for det samlede system vist på figur \ref{fig:steprespons_samlet_x}.

\begin{figure}[H]
  \centering
  \includegraphics[width = \textwidth]{billeder/klassisk/vinkelStepRespons.pdf}
  \caption{Steprespons for det samlede system i $x$-retning. Stepstørrelse er $0,8 ~\has$.}
\label{fig:steprespons_samlet_x}
\end{figure}

Ud fra figur \ref{fig:steprespons_samlet_x} ses det at vinklen opfylder kravet om ikke at svinge mere end $4,5\degree$ og samtidig ikke har en steady state fejl. Derudover ses det at der ingen oversving er på hastigheden og derved er alle krav opfyldt til regulatoren. De endelige regulatorer bliver således som i ligning \eqref{eq:x_hast_regulator_final}.

\begin{IEEEeqnarray}{rCl}
D_{\dot{X}_{\text{slæde}}}(s) = 30 + \frac{60}{s} ~~  \wedge ~~  D_{\Theta_{\text{last}}}(s) = -10
\label{eq:x_hast_regulator_final}
\end{IEEEeqnarray}

\subsubsection{Verificering}
For at verificere om regulatorerne er som de skal være er det valgt at simulere dem i SIMULINK. Grunden til at regulatorerne skal simuleres er for at tage højde for mætning i motoren. Mætningen i motoren fremkommer fordi at der endnu ikke er tjekket hvilke værdier regulatorerne outputter og dermed ikke vides om de er over de maksimale $\pm 10,8$ V som er mætningen på motoren. På figur \ref{fig:sim_step_xhast} er der afbilledet et simuleret step at systemet, med og uden mætning.

\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{billeder/klassisk/sim_step_x.pdf}
\caption{Simulering af steprespons for $x$-retning med vinkel og hastighed.}
\label{fig:sim_step_xhast}
\end{figure}

Kurverne uden mætning på figur \ref{fig:sim_step_xhast} stemmer overens med kurven for beregnet steprespons på figur \ref{fig:steprespons_samlet_x} og dermed overfolder kravene opstillet. Kurven med mætning er en smule langsommere, men overholder stadig alle krav. Hvis stepstørrelse mindskes vil systemet ikke gå i mætning, men dette vil stadig resultere i steprespons der overholder kravene. På figur \ref{fig:sim_maetnin_xhas} er der vist hvorledes outputtet fra regulatoren til hastigheden varierer over tid med et step i hastighed på $0,8 ~\has$.

\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{billeder/klassisk/sim_maetning_x.pdf}
\caption{Simulering af regulatoroutput $x$-retning ved step på $0,8 ~\has$.}
\label{fig:sim_maetnin_xhas}
\end{figure}